package com.gmd.consultamedica.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import com.gmd.consultamedica.model.ConsultaMedicaDAO;
import com.gmd.consultamedica.model.RecetamedicaDAO;
import com.gmd.consultamedica.model.SignovitalDAO;
import com.gmd.consultamedica.repository.JPAConsultaMedicaDAO;
import com.gmd.consultamedica.repository.JPARecetamedicaDAO;
import com.gmd.consultamedica.repository.JPASignovitalDAO;
import com.gmd.model.Consultamedica;
import com.gmd.model.Recetamedica;
import com.gmd.model.Signovital;
import com.gmd.util.Utilitario;

public class ConsultaMedicaService {

	EntityManager em;
	RecetamedicaDAO recetamedicaDAO;
	SignovitalDAO signovitalDAO;
	ConsultaMedicaDAO consultaMedicaDAO;
	
	public ConsultaMedicaService(){
		em = Utilitario.getInstance().getEntityManager();
		recetamedicaDAO = new JPARecetamedicaDAO(em);
		signovitalDAO = new JPASignovitalDAO(em);
		consultaMedicaDAO = new JPAConsultaMedicaDAO(em);
	}
	
	public Recetamedica registrarRecMedica(Recetamedica o){
		EntityTransaction tx = em.getTransaction();
		Recetamedica recmedica = null;
		try{
			tx.begin();
			recmedica = recetamedicaDAO.insert(o);
			tx.commit();
		}catch(Exception e){
			tx.rollback();
			throw new RuntimeException("No se pudo registrar Receta medica");
		}
		return recmedica;
	}
	
	public Signovital registrarSignoVital(Signovital o){
		EntityTransaction tx = em.getTransaction();
		Signovital signovital = null;
		try{
			tx.begin();
			signovital = signovitalDAO.insert(o);
			tx.commit();
		}catch(Exception e){
			tx.rollback();
			throw new RuntimeException("No se pudo registrar Signo Vital");
		}
		return signovital;
	}
	
	public Consultamedica registrarConsMed(Consultamedica o){
		EntityTransaction tx = em.getTransaction();
		Consultamedica cm = null;
		try{
			tx.begin();
			cm = consultaMedicaDAO.insert(o);
			tx.commit();
		}catch(Exception e){
			tx.rollback();
			throw new RuntimeException("No se pudo registrar Consulta medica");
		}
		return cm;
	}
	
	public int gennerarIdConsMed(){
		int id = consultaMedicaDAO.getLastId();
		return id + 1;
	}
	
}
